package map;

import com.sun.scenario.effect.impl.ImagePool;

import java.awt.image.ImageProducer;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * java.util.Map 查找表
 * Map 体现得结构屎一个两列多行的表格，左列为Key,右列为value，Key不能重复！
 * Map 是一个接口
 */
public class MapDemo1 {
    public static void main(String[] args) {
        //Map<String,Integer> m = new HashMap<>();
        //System.out.println(m);//{物理=98,数学=98,语文99,化学=96,英语=97}
        Map<String, Integer> m = new LinkedHashMap<>();
        /**
         * HashMap内的数据存储是有一种自己的算法结构顺序，
         所以输出时候不是按照put顺序存放的
         但是LinkedHashMap，只是按照顺序展示出来而已，底层数据结构不变

         * 1.为集合添加键值元素
             对象.put(Key k,Value v);
         */

        m.put("语文", 99);
        m.put("数学", 98);
        m.put("英语", 97);
        m.put("物理", 98);
        m.put("化学", 96);
        System.out.println(m);//{语文99,数学=98,英语=97,物理=98,化学=96}
        Integer value = m.put("历史", 94);
        System.out.println(value);//null
        //该方法中，对不是重复的Key，不发生替换，返回值为null

        value = m.put("语文", 50);
        System.out.println(value);//99
        //m.put(K k,V v)方法中，对重复的Key,修改原始的V值，返回值是原始的数值
        System.out.println(m);

        /**
         * 2.返回当前Map键值对个数
             int size() = 对象.size();
         */
        int size = m.size();
        System.out.println(size);//6

        /**
         * 3.获取
             对象.get(Key);
             根据给定的Key在Map中获取对应的Value,若Key不存在，返回null
         */
        value = m.get("数学");
        System.out.println("数学：" + value); //98

        /**
         * 4.判断是否包含
             boolean ck = m.containsKey(key);
             boolean cv = m.containsValue(value);
         */
        boolean ck = m.containsKey("语文");
        boolean cv = m.containsValue("30");
        System.out.println(ck); //ture
        System.out.println(cv); //false

        /**
         * 5.根据指定的key删除对应的数值对
             对象.remove(Key);
             返回值是这个key的value

         */
        value = m.remove("语文");
        System.out.println(m);
        System.out.println(value);//对应这个key的value值,50

        /**
         清空Map
         m.clear();
         判断是否为空Map
         m.isEmpty();
         */

    }
}
